#

| Chapter 4 The Bourne Shell and Korn Shell |

## set

    set [options arg1 arg2 ...]

With no arguments, set prints the values of all variables known to the current shell. Options can be enabled (-`option`) or disabled (+`option`). Options can also be set when the shell is invoked, via ksh or sh. (See "Invoking the Shell" at the end of this section.) Arguments are assigned in order to $1, $2, etc.

### Options

+A name

  Assign remaining arguments as elements of array `name`. Korn shell only.

-A name

  Same as +A, but unset `name` before making assignments. Korn shell only.

-a

  From now on, automatically mark variables for export after defining or changing them.

-e

  Exit if a command yields a nonzero exit status. In the Korn shell, the ERR trap is issued before the command exits.

-f

  Ignore filename metacharacters (e.g., `* ? [ ]`).

-h

  Locate commands as they are defined. The Korn shell creates tracked aliases, whereas the Bourne shell hashes function names. See hash.

-k

  Assignment of environment variables (`var`=`value`) will take effect regardless of where they appear on the command line. Normally, assignments must follow the command name.

-m

  Enable job control; background jobs will execute in a separate process group. -m is usually set automatically. Korn shell only.

-n

  Read commands but don't execute; useful for checking errors.

-o [`m`]

  List Korn shell modes, or turn on mode `m`. Many modes can be set by other options. Modes are:

  allexport

    Same as -a.

  bgnice

    Run background jobs at lower priority.

  emacs

    Set command-line editor to emacs.

  errexit

    Same as -e.

  ignoreeof

    Don't process `EOF` signals. To exit the shell, type exit.

  keyword

    Same as -k.

  markdirs

    Append / to directory names.

  monitor

    Same as -m.

  noclobber

    Prevent overwriting via `>` redirection; use `>|` to overwrite files.

  noexec

    Same as -n.

  noglob

    Same as -f.

  nolog

    Omit function definitions from history file.

  nounset

    Same as -u.

  privileged

    Same as -p.

  trackall

    Same as -h.

  verbose

    Same as -v.

  vi

    Set command-line editor to vi.

  viraw

    Same as vi, but process each character when it's typed.

  xtrace

    Same as -x.

-p

  Start up as a privileged user (i.e., don't process $HOME/.profile).

-s

  Sort the positional parameters. Korn shell only.

-t

  Exit after one command is executed.

-u

  In substitutions, treat unset variables as errors.

-v

  Show each shell command line when read.

-x

  Show commands and arguments when executed, preceded by a `+`. This provides step-by-step debugging of shell scripts. (Same as -o xtrace.)

-

  Turn off -v and -x, and turn off option processing. Included in Korn shell for compatibility with older versions of Bourne shell.

--

  Used as the last option; -- turns off option processing so that arguments beginning with - are not misinterpreted as options. (For example, you can set $1 to -1.) If no arguments are given after --, unset the positional parameters.

### Examples

>     set - "$num" -20 -30	Set $1 to $num, $2 to -20, $3 to -30.
>     set -vx	Read each command line; show it;
>     	execute it; show it again (with arguments).
>     set +x	Stop command tracing.
>     set -o noclobber	Prevent file overwriting.
>     set +o noclobber	Allow file overwriting again.

Reference: select |  | Reference: shift